﻿#ifndef QMOTHERBOARDINFOPROVIDER_H
#define QMOTHERBOARDINFOPROVIDER_H

#include <QObject>
#include <QString>
#include <QList>

class QMotherboardInfoProvider : public QObject
{
    Q_OBJECT

public:
    explicit QMotherboardInfoProvider(QObject *parent = nullptr);

    struct MotherboardDetails {
        /**
         * @brief manufacturer - 主板的制造商。例如："ASUS", "Gigabyte"。
         */
        QString manufacturer;

        /**
         * @brief product - 主板的产品型号。这是制造商指定的一个标识符，用于识别具体的主板型号。
         */
        QString product;

        /**
         * @brief serialNumber - 主板的序列号。这是一个唯一的标识符，用于区分不同的主板。
         */
        QString serialNumber;

        /**
         * @brief version - 主板的版本号。表示该主板的设计或修订版本。
         */
        QString version;

        /**
         * @brief caption - 主板的描述信息。通常是主板的简短描述。
         */
        QString caption;
    };

    QList<MotherboardDetails> getAllMotherboardDetails() const;

private:
    QList<MotherboardDetails> getMotherboardDetailsWindows() const;
    QList<MotherboardDetails> getMotherboardDetailsLinux() const;
};

#endif // QMOTHERBOARDINFOPROVIDER_H
